from PIL import Image 
import base64 
import os
from datetime import datetime 
 
def image_to_grayscale_base64(input_path, output_path):
    """
    将图片转为灰度图并保存Base64编码到文件 
    :param input_path: 输入图片路径
    :param output_path: 输出文本文件路径
    """
    try:
        # 记录处理开始时间（当前时间）
        start_time = datetime.now().strftime("%Y-%m-%d  %H:%M:%S")
        print(f"[{start_time}] 开始处理图片: {input_path}")
        
        # 1. 打开并转换灰度图
        with Image.open(input_path)  as img:
            grayscale_img = img.convert("L") 
            
            # 显示图片信息（调试用）
            print(f"图片格式: {img.format},  尺寸: {img.size},  模式: {img.mode}  → 灰度图")
            
            # 2. 临时保存灰度图（可选）
            timestamp = datetime.now().strftime("%Y%m%d%H%M%S") 
            temp_path = f"grayscale_{timestamp}.jpg"
            grayscale_img.save(temp_path) 
            print(f"临时灰度图已保存: {temp_path}")
            
            # 3. 转换为Base64 
            with open(temp_path, "rb") as f:
                image_data = f.read() 
                base64_data = base64.b64encode(image_data).decode("utf-8")
                
            # 4. 写入输出文件
            with open(output_path, "w") as output_file:
                output_file.write(base64_data) 
                
            # 5. 清理临时文件
            os.remove(temp_path) 
            
        # 记录完成时间 
        end_time = datetime.now().strftime("%H:%M:%S") 
        print(f"[{end_time}] 处理完成! Base64数据已保存至: {output_path}")
        print(f"Base64数据长度: {len(base64_data)} 字符")
        
    except Exception as e:
        print(f"处理失败: {str(e)}")
 
# 使用示例（替换为实际路径）
if __name__ == "__main__":
    input_image = r"D:\download\ShareX-17.1.0-portable\ShareX\Screenshots\2025-06\X4bHiUG5B0.png"        # 替换为你的图片路径 
    output_file = f"output_{datetime.now().strftime('%Y%m%d')}.txt"   # 自动生成当日文件名
    
    image_to_grayscale_base64(input_image, output_file)